package com.gqj.bas.mapper;

import com.gqj.bas.domain.BasCabinetGrid;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 层格Mapper接口
 * 
 * @author lxq
 * @date 2023-12-17
 */
public interface BasCabinetGridMapper 
{
    /**
     * 查询层格
     * 
     * @param gridId 层格主键
     * @return 层格
     */
    public BasCabinetGrid selectBasCabinetGridByGridId(Long gridId);

    /**
     * 查询层格列表
     * 
     * @param basCabinetGrid 层格
     * @return 层格集合
     */
    public List<BasCabinetGrid> selectBasCabinetGridList(BasCabinetGrid basCabinetGrid);

    /**
     * 新增层格
     * 
     * @param basCabinetGrid 层格
     * @return 结果
     */
    public int insertBasCabinetGrid(BasCabinetGrid basCabinetGrid);

    /**
     * 修改层格
     * 
     * @param basCabinetGrid 层格
     * @return 结果
     */
    public int updateBasCabinetGrid(BasCabinetGrid basCabinetGrid);

    /**
     * 删除层格
     * 
     * @param gridId 层格主键
     * @return 结果
     */
    public int deleteBasCabinetGridByGridId(Long gridId);

    /**
     * 批量删除层格
     * 
     * @param gridIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteBasCabinetGridByGridIds(Long[] gridIds);

    /**
     * 根据ID查询所有子层格
     *
     * @param gridId 层格ID
     * @return 层列表
     */
    public List<BasCabinetGrid> selectChildrenGridById(Long gridId);

    /**
     * 修改子元素关系
     *
     * @param grids 子元素
     * @return 结果
     */
    public int updateGridChildren(@Param("grids") List<BasCabinetGrid> grids);

    /**
     * 是否存在子节点
     *
     * @param gridId 层ID
     * @return 结果
     */
    public int hasChildByGridId(Long gridId);

    /**
     * 查询分类是否被引用
     *
     * @param gridId 层ID
     * @return 结果
     */
    public int checkMaterialExistGrid(Long gridId);

    /**
     * 查询层格下拉框
     *
     * @param basCabinetGrid 层格
     * @return 层格集合
     */
    public List<Map<String, Object>> gridOptions(BasCabinetGrid basCabinetGrid);
}
